import Vue from "vue";
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  // 状态
  state: {
    count: 0,
    test: {}
  },
  //对状态进行计算（修饰处理），和组件computed计算属性一致
  getters: {
    addPx: state => {
      return state.count + 'px'
    }
  },
  // 对状态进行增删改查的操作
  mutations: {
    increment(state, num = 1) {
      state.count += num;
    },
    decrement(state, num = 1) {
      state.count -= num;
    },
    updateTest(state, data) {
      state.test = data;
    }
  },
  //actions
  /**
   * action 是提交mutation
   * 对 mutation进行包装，对触发mutation的行为进行控制
   */
  actions: {
    delayIncrement(store, time = 1000) {
      setTimeout(() => {
        store.commit('increment');
      }, time)
    },
    getData(store) {
      //在store中， vue-resource作为 vue的静态方法使用
      Vue
        .http
        .get('https://api.douban.com/v2/book/1220562')
        .then(({body}) => {
          store.commit('updateTest',body);
        });
    }
  }
})